const express = require('express');
const fs = require('fs');
const path = require('path');
const cors = require('cors');
const app = express();
const PORT = 3000;

// 启用CORS和JSON解析
app.use(cors());
app.use(express.json());

// 提供静态文件
app.use(express.static(path.join(__dirname)));

// 确保data目录存在
const dataDir = path.join(__dirname, 'data');
if (!fs.existsSync(dataDir)) {
    fs.mkdirSync(dataDir);
}

// 确保assignments.json和history.json文件存在
const assignmentsPath = path.join(dataDir, 'assignments.json');
const historyPath = path.join(dataDir, 'history.json');

if (!fs.existsSync(assignmentsPath)) {
    fs.writeFileSync(assignmentsPath, '[]', 'utf8');
}

if (!fs.existsSync(historyPath)) {
    fs.writeFileSync(historyPath, '[]', 'utf8');
}

// 获取任务数据
app.get('/data/assignments.json', (req, res) => {
    try {
        const data = fs.readFileSync(assignmentsPath, 'utf8');
        res.json(JSON.parse(data));
    } catch (error) {
        console.error('读取任务数据失败:', error);
        res.status(500).json({ error: '读取任务数据失败' });
    }
});

// 保存任务数据
app.post('/data/assignments.json', (req, res) => {
    try {
        fs.writeFileSync(assignmentsPath, JSON.stringify(req.body), 'utf8');
        res.json({ success: true });
    } catch (error) {
        console.error('保存任务数据失败:', error);
        res.status(500).json({ error: '保存任务数据失败' });
    }
});

// 获取历史任务数据
app.get('/data/history.json', (req, res) => {
    try {
        const data = fs.readFileSync(historyPath, 'utf8');
        res.json(JSON.parse(data));
    } catch (error) {
        console.error('读取历史任务数据失败:', error);
        res.status(500).json({ error: '读取历史任务数据失败' });
    }
});

// 保存历史任务数据
app.post('/data/history.json', (req, res) => {
    try {
        fs.writeFileSync(historyPath, JSON.stringify(req.body), 'utf8');
        res.json({ success: true });
    } catch (error) {
        console.error('保存历史任务数据失败:', error);
        res.status(500).json({ error: '保存历史任务数据失败' });
    }
});

// 启动服务器
app.listen(PORT, () => {
    console.log(`服务器运行在 http://localhost:${PORT}`);
    console.log(`任务数据存储在 ${assignmentsPath}`);
    console.log(`历史任务数据存储在 ${historyPath}`);
});